1. Field of the Invention
The subject matter disclosed herein relates to transporting data between communication nodes, including techniques for transmitting data from a sending node and for receiving data at a destination node.
2. Discussion of the Prior Art
A communication protocol is a formal description of digital message formats and the rules for exchanging those messages in or between computing systems. For example, the Open Systems Interconnection (OSI) model employs standard functions for a communication system in various abstraction layers. An OSI layer provides service to the layer above it while gathering data from the layer below it. The OSI model includes physical, data link, network, transport, session, presentation, and application layers.
A transport layer for communications between communication devices provides end-to-end communication services for applications within a layered architecture of components and protocols. These services include connection-oriented data stream support, reliability, flow control, and multiplexing. Some examples of transport layer communication protocols used in computer networking are the user datagram protocol (UDP) and transmission control protocol (TCP).
For any given data transfer, there is a sender of the data and a recipient of the data. Typically, transport layer communication protocols break up a large amount of data to be transferred into small data packets which can easily be managed by the communications components used for the transfer. Each data packet typically includes information that enables the recipient to verify the reliability of the data packet. For example, the data packets may include a checksum parameter which the recipient can check to ensure that the data received was not altered in the transmission.
For each received data packet, the recipient typically responds to the sender with a packet that acknowledges the receipt of the corresponding packet to inform the sender the data packet was delivered and the next data packet can be sent (see FIGS. 1 and 2). This technique introduces latency delays because only one item can be sent at a time; either the data being transported or the acknowledgement. Larger data packet sizes may increase efficiency in this case, but require large amounts of data to be resent in the case of data loss.
Some transport protocols, such as TCP may utilize a sliding window protocol in which the transmitter can continue sending additional data packets while waiting for the acknowledgement of an earlier data packet. The round-trip time (RTT) and bandwidth capabilities may be taken into account in order to determine a limit on the amount of data that can be sent before stopping to wait for an acknowledgement for the sliding window technique. Again, the efficiency of this technique suffers greatly if data is not successfully transmitted and requires retransmission. Other protocols, such as UDP will stream packet data and not account for data loss or provide retransmissions. Thus, UDP provides an unreliable service in which data packets may arrive out of order, appear duplicated, or go missing without notice.
Based on the foregoing, techniques that provide reliable data communications between communication nodes in less time, particularly for transporting large amounts of data (e.g., greater than 1000 bytes), are desirable to increase transport speed. Additionally, it is desirable that such techniques include an efficient retransmission algorithm.